﻿/*
*
* 文件名    ：AutofacLocator                             
* 程序说明  : Autofac实现
* 更新时间  : 2020-05-21 16：05
* 联系作者  : QQ:779149549 
* 开发者群  : QQ群:874752819
* 邮件联系  : zhouhaogg789@outlook.com
* 视频教程  : https://space.bilibili.com/32497462
* 博客地址  : https://www.cnblogs.com/zh7791/
* 项目地址  : https://github.com/HenJigg/WPF-Xamarin-Blazor-Examples
* 项目说明  : 以上所有代码均属开源免费使用,禁止个人行为出售本项目源代码
*/

namespace Consumption.Core.Common
{
    using Autofac;
    using Consumption.Core.Interfaces;
    using System;
    using System.Collections.Generic;
    using System.Text;

    /// <summary>
    /// Autofac实现
    /// </summary>
    public class AutofacLocator : IAutoFacLocator
    {
        Autofac.IContainer container;

        public TInterface Get<TInterface>(string typeName)
        {
            if (container == null) throw new Exception("IContainer is null");
            if (container.IsRegisteredWithName<TInterface>(typeName))
                return container.ResolveNamed<TInterface>(typeName);
            else
                return default;
        }

        public TInterface Get<TInterface>()
        {
            if (container == null) throw new Exception("IContainer is null");
            return container.Resolve<TInterface>();
        }

        public void Register(ContainerBuilder builder)
        {
            container = builder.Build();
        }
    }
}
